這次參加鐵人賽,我打算利用這個機會來深入探索大型語言模型(LLM)領域、相關的基礎知識,以及專案。雖然我對自然語言處理(NLP)領域並非完全不熟悉 - 在Bert的年代,我曾經花了不少時間研究如何用訓練好的Bert進行下游任務的finetune,當時的專案是Question Answering。我使用Bert(實際上是roberta)組合出的QA模型的回答能力十分一般。給它一篇類似多益閱讀測驗的短文,如果能根據問題從文章中摘取對應的文字拼成答案,我就會覺得很不錯了。再進一步,如果它能從文章中進行簡單的數字推理,那就更好了。至於申論,只要答案不太扯,我就會覺得這個模型很了不起了。
然而,在離開NLP領域兩年多後,ChatGPT突然出現,它的回答問題的精準程度讓我難以置信。尤其是它回答Leetcode上相關的程式語言考題的能力,真的是讓人嘆為觀止。我當時的第一反應是,這東西一定會讓我失業;即便不是立刻失業,也會讓我所從事的行業的門檻立刻降低好幾倍。我會如何與那些比我年輕、體力更充沛的人競爭呢?
因此,我開始好奇,是否可以重新投入NLP領域,了解目前所謂的LLM究竟加入了哪些新的元素,使得當前的模型能夠具有如此廣泛的知識面、深度、以及過去難以想像的推理能力和長期記憶力。
當然,這次的目標還是要集中在實際的東西上。我希望能了解,在現今業界,不屬於大公司的研究人員,如何在沒有大量運算資源的情況下,玩出新的花樣。比如,如果我只有一張RTX3090,是否也能進入LLM的領域,能夠針對特定領域的任務進行模型的縮小、微調,並且最終運行在自己的設備上。
思考了一陣子後,我想到了每天在社交媒體上經常看到的一些高頻出現的專案和技術名稱。接下來,我打算從這些專案和技術著手:
然而,在開始之前,我打算從nanoGPT開始。首先,我將從一個極簡的GPT專案開始,複習一下GPT模型的一些重要基礎和